package com.yonyou.poi;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.junit.Test;

import java.io.FileOutputStream;

/**
 * @Author wwj
 * @Date 2021/12/15
 * @Description excel 分为了 03 和 07 两个版本，03 有最大行数限制，07 没有限制
 *  主要区别就是看 03 是 H 开头， 07 是 X 开头
 */
public class ExcelWriteTest {

    // 03 版本的写
    @Test
    public void writeTest03 () throws Exception{

        // 1 创建工作簿
        Workbook workbook = new HSSFWorkbook();

        // 2 创建工作表,在工作簿的基础上创建表
        Sheet sheet = workbook.createSheet();

        // 3 创建行，在工作表的基础上创建行
        Row row = sheet.createRow(0);

        // 4 创建单元格，有行才有列，行列交会就是单元格
        Cell cell = row.createCell(0);

        // 5 给单元格填充值
        cell.setCellValue("username");

        // 重复
        Cell cell2 = row.createCell(1);
        cell2.setCellValue("password");

        // 第二行填充具体值
        Row row2 = sheet.createRow(1);
        Cell cell21 = row2.createCell(0);
        cell21.setCellValue("张三");
        Cell cell22 = row2.createCell(1);
        cell22.setCellValue("zhangsan");

        // 6 需要以文件流的方式进行传输,注意路径中文件的后缀名
        FileOutputStream fileOutputStream = new FileOutputStream("D:/CMCC/Study/03write.xls");

        // 7 调用方法
        workbook.write(fileOutputStream);

        // 8 关闭流
        fileOutputStream.close();

        System.out.println("03write写出成功！");

    }


    // 07 版本的写
    @Test
    public void writeTest07 () throws Exception{

        // 1 创建工作簿
        Workbook workbook = new XSSFWorkbook();

        // 2 创建工作表,在工作簿的基础上创建表
        Sheet sheet = workbook.createSheet();

        // 3 创建行，在工作表的基础上创建行
        Row row = sheet.createRow(0);

        // 4 创建单元格，有行才有列，行列交会就是单元格
        Cell cell = row.createCell(0);

        // 5 给单元格填充值
        cell.setCellValue("用户名");

        // 重复
        Cell cell2 = row.createCell(1);
        cell2.setCellValue("密码");

        // 第二行填充具体值
        Row row2 = sheet.createRow(1);
        Cell cell21 = row2.createCell(0);
        cell21.setCellValue("李四");
        Cell cell22 = row2.createCell(1);
        cell22.setCellValue("qaz");

        // 6 需要以文件流的方式进行传输,注意路径中文件的后缀名
        FileOutputStream fileOutputStream = new FileOutputStream("D:/CMCC/Study/07write.xlsx");

        // 7 调用方法
        workbook.write(fileOutputStream);

        // 8 关闭流
        fileOutputStream.close();

        System.out.println("07write写出成功！");

    }
}
